package com.yixia.system.mapper.system;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yixia.common.core.domain.entity.SysDictData;
import com.yixia.common.utils.StringUtils;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
* @author 35038
* @description 针对表【sys_dict_data(字典数据表)】的数据库操作Mapper
* @createDate 2023-07-17 21:43:43
* @Entity com.java1234.entity.SysDictData
*/

@Mapper
public interface SysDictDataMapper extends BaseMapper<SysDictData> {



    /**
     * 根据字典类型查询字典数据
     *
     * @param dictType 字典类型
     * @return 字典数据集合信息
     */
    public default List<SysDictData> selectDictDataByType(String dictType){
        LambdaQueryWrapper<SysDictData> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SysDictData::getStatus, "0");
        queryWrapper.eq(SysDictData::getDictType, dictType);
        List<SysDictData> sysDictData = this.selectList(queryWrapper);
        return sysDictData;
    }

    /**
     * 根据dict_type查询字典数据
     *
     * @param dictType 字典类型
     * @return 字典数据
     */
    default Integer countDictDataByType(String dictType){

        LambdaQueryWrapper<SysDictData> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SysDictData::getDictType, dictType);
        Integer count = Math.toIntExact(this.selectCount(queryWrapper));
        return count;
    }

    /**
     * 检验标签的唯一性
     * @param dictLabel
     * @param dictType
     * @return
     */
    default SysDictData checkdictLabelUnique(String dictLabel, String dictType){
        LambdaQueryWrapper<SysDictData> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SysDictData::getDictLabel, dictLabel).eq(SysDictData::getDictType, dictType);
        return selectOne(queryWrapper);
    }

    /**
     * 检验值的唯一性
     * @param dictValue
     * @param dictType
     * @return
     */
    default SysDictData checkdictValueUnique(String dictValue, String dictType){
        LambdaQueryWrapper<SysDictData> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SysDictData::getDictValue, dictValue).eq(SysDictData::getDictType, dictType);
        return selectOne(queryWrapper);
    }

    /**
     * 进行条件查询
     * @param dictData
     * @return
     */
    default List<SysDictData> selectDictDataList(SysDictData dictData){
        LambdaQueryWrapper<SysDictData> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(StringUtils.isNotEmpty(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
                    .like(StringUtils.isNotEmpty(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
                    .eq(StringUtils.isNotEmpty(dictData.getStatus()), SysDictData::getStatus, "0")
                .orderByAsc(SysDictData::getDictSort);

        return this.selectList(queryWrapper);
    }
}




